package modulos.pessoa.managedbean;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import modulos.pessoa.dao.PessoaDAO;
import modulos.pessoa.entidade.Pessoa;
import utils.ColectionHelper;

@ManagedBean
@SessionScoped
public class PesquisarPessoa {

	private List<Pessoa> pessoas;
	private Pessoa dadosFiltro;
	
	public PesquisarPessoa() {
		setPessoas(new ArrayList<Pessoa>());
		dadosFiltro = new Pessoa();
	}
	
	public List<Pessoa> getPessoas() {
		return pessoas;
	}
	public void setPessoas(List<Pessoa> pessoas) {
		this.pessoas = pessoas;
	}
	
	public Pessoa getDadosFiltro() {
		return dadosFiltro;
	}
	public void setDadosFiltro(Pessoa dadosFiltro) {
		this.dadosFiltro = dadosFiltro;
	}
	
	public String pesquisar() {
		PessoaDAO pessoaDAO = new PessoaDAO();
		setPessoas(pessoaDAO.pesquisar(getDadosFiltro()));
		System.out.println("Pesquisado!");
		return "/pessoa/pesquisarpessoa.jsf?faces-redirect=true";
	}
	
	public String limpar() {
		setPessoas(new ArrayList<Pessoa>());
		dadosFiltro = new Pessoa();
		return "/pessoa/pesquisarpessoa.jsf?faces-redirect=true";
	} 
	
	public String excluir(){
		PessoaDAO pessoaDAO = new PessoaDAO();
		Pessoa pessoaDeletada = null;
		Map<String, String> map = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
		
		if(!ColectionHelper.ehVazioOuNulo(getPessoas())){
			
			for (Pessoa pes : getPessoas()) {
				if(pes.getId().equals(new Long(map.get("idPessoa")))){
					pessoaDeletada = pes;
					break;
				}
			}
			
			if(pessoaDeletada != null){
				pessoaDAO.excluir(pessoaDeletada);
				getPessoas().remove(pessoaDeletada);
			
				String mensagem = ResourceBundle.getBundle("bundles.messagens").getString("msg.excluido.sucesso");
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, mensagem, mensagem));
			}
		
		}
		
		return "";
	}
}
